8  Tools And Resources

A fool with a tool is still a fool

Grady Booch

8.1 Getting Started

A common misconception about the competition is that you need to be good at programming to take part. Spoiler: you don’t.

For context, Year 10 was the first time I participated in the challenge, and I only wish I had discovered it sooner. The exhilaration of cracking 10A the night before the final deadline, armed with nothing but a pen, paper, and an Excel spreadsheet, remains one of my most memorable moments.

For a lot of the challenge, you can get pretty far without much coding at all, it’ll be slow and a bit tedious, but absolutely doable. That said, just because we can solve everything by hand doesn’t mean we should.

My first two of years doing the Cipher Challenge I barely knew how to code, so I relied on very simple tools like:

  • reading from a text file

  • finding and replacing characters

  • String manipulation

  • frequency analysis

You can also use a spreadsheet or any text editor to do this. But the above are just a few lines of Python each, and you can learn them as you go.

When dealing with any programming problem, the hard part is usually knowing what to do rather than how to do it. The ‘how’ comes with time and practice, but once you know what type of cipher/problem you’re dealing with, things become more manageable.

For example, if you’re working with a transposition cipher, you can abstract the problem by thinking of it as just picking a key length, splitting the ciphertext into rows of that length, and ordering the columns and seeing if it looks more or less like English, and making small tweaks in your row/column layout as you go along. You can do all of that using a spreadsheet without writing a single line of code. But once you understand the process of solving that cipher, you can look up how to implement something like a hill-climbing attack to automate the tweaking and speed up the decryption process.

I learned Python during GCSEs, but just the basics to get me a good grade. Having never done any programming before that, most of my coding experience came from writing solutions for the cipher challenge problems, which in turn helped me in A-Level and just improving thinking skills in general. There is a difference between learning programming in a classroom and learning because you have a genuinely annoying ciphertext in front of you and would quite like it to stop being annoying. While studying Mathematics at university now, I realised that most of the things I’ve learned is thanks to the experienced gained by taking part in this competition.

8.1.1 Past Challenges

One of the most useful things to do is to go back and look at past challenges. Conveniently for the competitors, there exists the unofficial archive of National Cipher Challenge which has problems dating back all the way to 2002.

Past challenges are helpful for two reasons. Firstly, they give you practice. Secondly, they help you build pattern recognition. You start to notice the kinds of ciphers that appear more often in later rounds, the kinds of twists the setters seem to enjoy introducing when they are feeling particularly mischievous.

When it came to tackling 10B, our team ended up going back through previous later round challenges and making a list of the kinds of ciphers that had appeared before. From there, we started writing helper scripts for the ones that came up more often, just so we could automate the more repetitive parts and spend more time actually thinking.

8.1.2 Learning with Projects

I genuinely think one of the best ways to learn anything is to build things that interest you. Every now and then I start some new maths or coding project, often with absolutely no guarantee that I will finish it, but I almost always end up learning a lot in the process. So pick something you enjoy and do it for fun, not just because you think you ‘should’.

As much as I loved writing code for solving challenges, there were definitely times when it became stressful, and if you find that happening, it’s usually a sign you should switch things up for a bit. Sometimes that means working on a different problem, and sometimes it means doing something completely different1.

There are lots of excellent books and resources out there, and people much more experienced than me will happily recommend them if you post in the Forum. But personally, I have mostly learned by searching things as I needed them. I often find big books overwhelming when I do not yet know what is relevant. It is much easier to care about a concept once you have already encountered the problem that makes it useful.

It makes a massive impact being around people who share a similar goal to you than doing everything by yourself. When I first started programming, I never imagined I’d be able to solve the kinds of problems I can today. It can be really daunting at first, especially when you’re looking at other people’s code and it all feels incomprehensible, but you have to keep things in perspective and trust the learning process, it genuinely does add up over time.

Also remember, you don’t need to do everything at once. It may feel too much, but just try and focus on implementing one concept, one solver, or learning one skill at a time. Everyone starts somewhere.

8.2 The Official Rules

There are also plenty of online tools that can solve ciphers in one click. But the competition has specific rules about what counts as fair use, so it’s worth knowing them so you don’t accidentally invest time in something you can’t use.

You may use spreadsheets and text editors to help you tackle the challenges and any software we provide on the Official BOSS
Deciphering Tools page. You can also use any software that you write yourself. You should not use deciphering tools you find elsewhere on the web and doing so can result in disqualification.

In short, you’re not allowed to import you way to victory, i.e. don’t use existing tools and libraries designed for cipher cracking. But you can write your own programs and use libraries like numpy.

The challenge site also has many good resources under the BOSS Training Division to help you get started with codebreaking and programming.

If during the competition, you have more questions whether something is within the rules or not, always ask in the Forum.

8.3 The Forum

The Cipher Challenge Forum has to be one of the most valuable resources in the entire competition. As a reminder, below are the Forum rules reiterated:

Some House Rules for the Forum
You can post comments and questions about the challenges, and share ideas with others here on the forum.
The Forum is staffed by Harry and Jodie together with members of ELF, theElfLeague ofForum moderators. Remember that those you are talking to on the Forum are people too, even the elves. They have feelings, just like you, so keep it friendly and polite.
We want to keep you all safe, so please do not post, or attempt to post anything personal. Here you can be anyone you want to be as long as you don’t tell anyone who you are!
Above all, please, please, please don’t give hints, tips, or above all solutions to a live challenge without asking us first! This is an important rule and we don’t want it compromised.
If you want to post anything at all about the challenges, post it here, so that we can moderate it and everyone can read it. You might be tempted to use other channels like Discord, but that is a breach of security and not the way we do things here.
Remember the three Ws: Be witty, be wise and be warm! Let’s make the forum a great place to hang out.
Harry

I have loved posting and contributing to the forum both as a competitor and in the past year as an alumnus. Some of my favourite moments now come from posting on it and seeing someone else discover the joy of problem solving. Sometimes it’s just a small hint, or someone asking a question that nudges another person in the right direction, other times it’s reading about someone finally crack a cipher they’ve been stuck on for days.

Learning is much easier when you’re not doing it alone. There’s a very high chance that whatever problem you’re stuck on has been hit by someone before2 and you get have this space where you can not only communicate with like-minded people, but be part of this shared experience. And if you’re lucky, you might even get a reply from Harry himself.

8.4 Short rant on GenAI

At the 2025 Prizegiving at Bletchley, guest speaker Rob Eastaway gave a brilliant talk about (counter-)intuition and how often our instincts can lead us down the incorrect solution. But one moment that stuck with me was when he mentioned how AI almost never responds with ‘I don’t know’. Try it yourself, ask your favourite LLM, “Why don’t you ever say ‘I don’t know’?" and see what happens.

We hear a lot about AI at the moment, and how ‘intelligent’ it’s becoming, but there are still things that it can’t replace. In many ways, I believe that problem solving begins with the willingness to admit you don’t yet know the answer, and the curiosity to keep exploring until you do.

AI can certainly generate answers, but it can’t replace the experience of solving something meaningful together with other people. It can’t replace the moment when someone on the forum posts a small hint that suddenly unlocks a problem you’ve been stuck on for hours. It can’t replace the pride you feel when another student finally cracks a cipher they have been wrestling with for days, and it definitely can’t replace the strange, lovely experience of building friendships around shared confusion and a mutual desire to bully ciphertext into becoming plaintext.

No conversation with an AI can replace the feeling of another human choosing to spend their time helping you through something difficult. And equally, no algorithm can replace the sheer joy of finally cracking a ciphertext after hours of effort. And no matter how sophisticated the tool becomes, that part can’t be automated.

What I’ve realised over the years is something simple: one of the things humans can do that AI cannot is share in the joy of someone else finally solving something difficult. Looking back, the Cipher Challenge is one of the places where I’ve seen that most clearly.

1838: Machine Learning

  1. At one point I picked up crocheting, and I vividly remember crocheting while debugging my A-Level code because I was getting so frustrated with a program that refused to run. Weirdly, that kind of break actually helped more than staring at the screen ever did. This sounds ridiculous, but then again, so does a lot of programming.↩︎

  2. funnily enough this is true in both programming and life…↩︎